package dao

import (
	"time"
)

// 这是 UmsAdmin 的全局公开dao对象，被service层调用!
var UmsAdminDao = umsAdminDao{}

// 这是 ums_admin表 的实体类
type UmsAdmin struct {
	Id         int64     `json:"id" form:"id"`
	Username   string    `json:"username" form:"username"`
	Password   string    `json:"password" form:"password"`
	Icon       string    `json:"icon" form:"icon"`               // 头像
	Email      string    `json:"email" form:"email"`             // 邮箱
	NickName   string    `json:"nick_name" form:"nick_name"`     // 昵称
	Note       string    `json:"note" form:"note"`               // 备注信息
	CreateTime time.Time `json:"create_time" form:"create_time"` // 创建时间
	LoginTime  time.Time `json:"login_time" from:"login_time"`   // 最后登录时间
	Status     int32     `json:"status" form:"status"`           // 帐号启用状态：0-&gt;禁用；1-&gt;启用
}

// 注意:这是 UmsAdmin 的私有dao对象，只能在dao层内使用!
type umsAdminDao struct {
	GetAdminByName     func(username string) (UmsAdmin, error) `args:"username"`
	Insert             func(u UmsAdmin) (int64, error)
	UserExist          func(username, password string) (UmsAdmin, error) `args:"username,password"`
	UpdateColumn       func(loginTime time.Time) (int64, error)          `args:"login_time"`
	List               func(args UmsAdminList) ([]UmsAdmin, error)
	SelectByPrimaryKey func(id int64) (UmsAdmin, error) `args:"id"`
	UpdateById         func(args UmsAdmin) (int64, error)
	UpdateStatus       func(id, status int64) (int64, error)          `args:"id,status"`
	UpdatePassword     func(password string, id int64) (int64, error) `args:"password,id"`
	DeleteByPrimaryKey func(id int) (int64, error)                    `args:"id"` // 物理删除一条记录
}

// go-jwt 中需要token保护的用户信息
type UmsJWTParma struct {
	Username string `json:"username" form:"username"`
	Password string `json:"password" form:"password"`
}

// 根据用户名或姓名分页获取用户列表 /admin/list Get
type UmsAdminList struct {
	Keyword  string `json:"keyword" form:"keyword"`
	PageSize int64  `json:"page_size" form:"page_size"`
	PageNum  int64  `json:"page_num" form:"page_num"`
}

// 修改指定用户密码 /updatePassword
type UpdateAdminPasswordParam struct {
	Username    string `json:"username" form:"username" v:"required"`
	OldPassword string `json:"old_password" form:"old_password" v:"required"`
	NewPassword string `json:"new_password" form:"new_password" v:"required"`
}

//type UmsAdmin struct {
//	Id         int64     `json:"id" form:"id" uri:"id" v:"id"`
//	Username   string    `json:"username" form:"username" uri:"username" v:"username"`
//	Password   string    `json:"password" form:"password" uri:"password" v:"password"`
//	Icon       string    `json:"icon" form:"icon" uri:"icon" v:"icon"`                             // 头像
//	Email      string    `json:"email" form:"email" uri:"email" v:"email"`                         // 邮箱
//	NickName   string    `json:"nick_name" form:"nick_name" uri:"nick_name" v:"nick_name"`         // 昵称
//	Note       string    `json:"note" form:"note" uri:"note" v:"note"`                             // 备注信息
//	CreateTime time.Time `json:"create_time" form:"create_time" uri:"create_time" v:"create_time"` // 创建时间
//	LoginTime  time.Time `json:"login_time" form:"login_time" uri:"login_time" v:"login_time"`     // 最后登录时间
//	Status     int32     `json:"status" form:"status" uri:"status" v:"status"`                     // 帐号启用状态：0-&gt;禁用；1-&gt;启用
//}

//type AdminRegister struct {
//	Username   string    `json:"username" form:"username" uri:"username" v:"username"`
//	Password   string    `json:"password" form:"password" uri:"password" v:"password"`
//	Icon       string    `json:"icon" form:"icon" uri:"icon" v:"icon"`                             // 头像
//	Email      string    `json:"email" form:"email" uri:"email" v:"email"`                         // 邮箱
//	NickName   string    `json:"nick_name" form:"nick_name" uri:"nick_name" v:"nick_name"`         // 昵称
//	Note       string    `json:"note" form:"note" uri:"note" v:"note"`                             // 备注信息
//	CreateTime time.Time `json:"create_time" form:"create_time" uri:"create_time" v:"create_time"` // 创建时间
//	Status     int32     `json:"status" form:"status" uri:"status" v:"status"`                     // 帐号启用状态：0-&gt;禁用；1-&gt;启用
//}
